// Node-RED Function Node Code - 快速接收MQTT数据并缓存
// 专门用于mqttin节点，快速接收数据避免阻塞

// 初始化数据队列
if (!global.get('mqttDataQueue')) {
    global.set('mqttDataQueue', []);
}

// 快速验证和缓存
try {
    const topic = msg.topic;
    const payload = msg.payload;
    
    // 基本格式验证
    if (!topic || !Array.isArray(payload) || payload.length === 0) {
        return null;
    }
    
    // 快速格式检查
    const parts = topic.split('/');
    if (parts.length < 5 || parts[1] !== 'hbbtst' || parts[2] !== 'dra') {
        return null;
    }
    
    // 缓存原始数据
    const queue = global.get('mqttDataQueue') || [];
    queue.push({
        topic: topic,
        payload: payload,
        timestamp: Date.now()
    });
    
    // 限制队列大小，避免内存溢出
    if (queue.length > 10000) {
        queue.splice(0, queue.length - 10000);
    }
    
    global.set('mqttDataQueue', queue);
    
    // 快速返回，不做其他处理
    return { topic: 'data_cached', payload: { queued: queue.length } };
    
} catch (error) {
    node.error('Cache error: ' + error.message);
    return null;
}